package com.tedu.api.thread;

/**
 * 线程的生命周期【线程模型】
 * 1.新建状态【New】 线程被创建之后，处于新键状态
 *  SimpleThread st=new SimpleThread();     【线程的出生】
 * 2.就绪状态【Runnable】  新建线程之后，调用start方法  线程进入就绪状态
 * 调用start()方法后线程等待被调度
 * 3.运行状态【Running】新建线程，执行run方法进入运行状态
 * 当前线程获取CPU时间片，执行run方法，输出run方法中内容
 * 4.阻塞状态【Blocked】停止状态，sleep方法
 * Thread.sleep(1000) 后进入阻塞状态，停止1秒
 * 5.终止状态【Dead】：正常、异常【死亡状态】
 * 执行run方法最后，进入线程的终止状态
 *案例：线程的一生
 *
 */
public class ThreadStateDemo {
    public static void main(String[] args) {
        System.out.println("主线程处于新建状态");  //0-开始

        SimpleThread st=new SimpleThread(); //1.新建状态【线程出生】
        System.out.println(st.getName()+"现在处于新建状态");

        st.start(); //2.线程就绪状态
        System.out.println(st.getName()+"在调用start后处于就绪状态");

    }
}
//创建SimpleThread实习Thread类
class SimpleThread extends Thread{
    //3.运行状态
    @Override
    public void run() {
        System.out.println(Thread.currentThread().getName()+""+"处于运行状态");
        try {
            Thread.sleep(1000);
            //4.阻塞状态
        } catch (InterruptedException e) {
            System.out.println(Thread.currentThread().getName()+"被中断");
        }
        //5.线程终止
        System.out.println(Thread.currentThread().getName()+"处于终止状态");
    }
}